package com.zy.pay.api.request;

import com.alibaba.fastjson.annotation.JSONField;
import com.zy.pay.api.enums.ZyPayApiEnum;
import com.zy.pay.api.response.ZyPayPreOrderResponse;

/**
 * 预下单请求参数 <br>
 *
 * @author panweiqiang <br>
 * @date 2020/7/7 9:27 <br>
 */
public class ZyPayPreOrderRequest extends ZyPayRequest<ZyPayPreOrderResponse> {

    @Override
    public Class<ZyPayPreOrderResponse> getResponseClass() {
        return ZyPayPreOrderResponse.class;
    }

    @Override
    public ZyPayApiEnum getApiEnum() {
        return ZyPayApiEnum.PRE_ORDER;
    }

    /**
     * 门店编码
     */
    @JSONField(name = "register_id")
    private String  registerId;

    /**
     * 设备编码
     */
    @JSONField(name = "dev_id")
    private String  devId;

    /**
     * 商户订单号
     */
    @JSONField(name = "cp_tran_no")
    private String  cpTranNo;

    /**
     * 订单金额，单位分
     */
    @JSONField(name = "tran_money")
    private Long    tranMoney;

    /**
     * 商品名称
     */
    @JSONField(name = "prod_name")
    private String  prodName;

    /**
     * 业务类型，相同类型的交易传一样的值
     */
    @JSONField(name = "tran_type")
    private String  tranType;

    /**
     * 商品描述
     */
    @JSONField(name = "prod_des")
    private String  prodDes;

    /**
     * 子商户关注的用户openid
     */
    @JSONField(name = "sub_openid")
    private String  subOpenid;

    /**
     * 订单过期时间，单位为秒，可选值：60、120、180、240、300、360、420、480、540、600、1200、1800、3600、7200
     */
    @JSONField(name = "expire_time")
    private Long    expireTime;

    /**
     * 后台回调地址
     */
    @JSONField(name = "notify_url")
    private String  notifyUrl;

    /**
     * 页面返回地址
     */
    @JSONField(name = "return_url")
    private String  returnUrl;

    /**
     * 商户订单提交时间,精确到秒，格式：yyyyMMddHHmmss
     */
    @JSONField(name = "time")
    private String  time;

    /**
     * 统一认证id
     */
    @JSONField(name = "user_id")
    private Long    userId;

    /**
     * 用户姓名
     */
    @JSONField(name = "user_name")
    private String  userName;

    /**
     * 学工号
     */
    @JSONField(name = "job_no")
    private String  jobNo;

    /**
     * 总金额（优惠金额+实际付款金额）,这边只存储，并原样返回给商户
     */
    @JSONField(name = "total_money")
    private Long    totalMoney;

    /**
     * 一卡通账号/学工号/身份证号
     */
    @JSONField(name = "account")
    private String  account;

    /**
     * 账号类别，1一卡通账号，2学工号，3身份证号
     */
    @JSONField(name = "account_type")
    private Integer accountType;

    /**
     * 学校编码
     */
    @JSONField(name = "school_code")
    private String  schoolCode;

    /**
     * 客户端IP
     */
    @JSONField(name = "client_ip")
    private String  clientIp;

    public String getRegisterId() {
        return registerId;
    }

    public void setRegisterId(String registerId) {
        this.registerId = registerId;
    }

    public String getDevId() {
        return devId;
    }

    public void setDevId(String devId) {
        this.devId = devId;
    }

    public String getCpTranNo() {
        return cpTranNo;
    }

    public void setCpTranNo(String cpTranNo) {
        this.cpTranNo = cpTranNo;
    }

    public Long getTranMoney() {
        return tranMoney;
    }

    public void setTranMoney(Long tranMoney) {
        this.tranMoney = tranMoney;
    }

    public String getProdName() {
        return prodName;
    }

    public void setProdName(String prodName) {
        this.prodName = prodName;
    }

    public String getTranType() {
        return tranType;
    }

    public void setTranType(String tranType) {
        this.tranType = tranType;
    }

    public String getProdDes() {
        return prodDes;
    }

    public void setProdDes(String prodDes) {
        this.prodDes = prodDes;
    }

    public String getSubOpenid() {
        return subOpenid;
    }

    public void setSubOpenid(String subOpenid) {
        this.subOpenid = subOpenid;
    }

    public Long getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(Long expireTime) {
        this.expireTime = expireTime;
    }

    public String getNotifyUrl() {
        return notifyUrl;
    }

    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getJobNo() {
        return jobNo;
    }

    public void setJobNo(String jobNo) {
        this.jobNo = jobNo;
    }

    public Long getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(Long totalMoney) {
        this.totalMoney = totalMoney;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public Integer getAccountType() {
        return accountType;
    }

    public void setAccountType(Integer accountType) {
        this.accountType = accountType;
    }

    public String getSchoolCode() {
        return schoolCode;
    }

    public void setSchoolCode(String schoolCode) {
        this.schoolCode = schoolCode;
    }

    public String getClientIp() {
        return clientIp;
    }

    public void setClientIp(String clientIp) {
        this.clientIp = clientIp;
    }
}
